#ifndef ONAF_H
#define ONAF_H

//interne acties die door het systeem kunnen worden of moeten worden uitgevoerd
typedef enum{
	Snelheidverhogen,	//de ingestelde snelheid moet worden verhoogd
	Snelheidverlagen,	//de ingestelde snelheid moet worden verlaagd
	activatieknopIndrukken,			//deze actie de-activeerd ook het systeem
	PedaalIndrukken,	//er moet gereageerd worden op een pedaal
	Pauzeren,			//deze actie is ook de-pauzeren
	SnelheidControleren //de snelheid moet gecontroleerd worden
} Actie;

//alle modus waarin de cruise control zich kan bevinden
typedef enum {
	inactief,	//het systeem start op in inactief
	actief,		//als het systeem de snelheid regelt bevindt het zich in deze status
	pauze		//als het systeem gepauzeerd is bevindt het zich in deze status
} Status;

//alle mogelijke knoppen die ingedrukt kunnen worden
typedef enum {
	AanuitKnop,		//de aan/uit knop
	PauzeKnop,		//de pauze knop
	VersnellenKnop,	//de knop die de snelheid naar boven bijstelt
	VertragenKnop,	//de knop die de snelheid naar omlaag bijstelt
	GeenKnop		//in het geval dat geen knop is ingedrukt maar er toch iets moet gebeuren
					//dan is er logischerwijs geen knop ingedrukt
} KnopType;

//de invoer die naar de sensor kan gaan
//deze informatie wordt op de mailbox van de knop gezet.
//de cruise control doet dit zelf op de mailbox ervan zetten.
struct SensorInvoer{
	int gas, koppeling, rem; //de stand van de pedalen
	int snelheid; //de snelheid in km/h
	KnopType knoppen; //welke knop dat ingedrukt is
};
typedef struct SensorInvoer SensorInvoer;

//De uitvoer die de sensor uitstuurt
struct outputUitvoer
{
	int bijstellingSnelheid; //de factor waarmee de snelheid bijgestuurt moet worden
	Status stat; //De huidige status van het systeem wordt meegegeven om zo te kunnen laten zien in welke status het zich op dit moment begeeft
};
typedef struct outputUitvoer outputUitvoer;


#endif